Historically, computer systems have employed the use of partitioning and virtualization to divide up limited system resources among the simultaneous needs of multiple users, multiple applications, multiple operating systems, or a combination of the above. Dividing up system resources into multiple partitions or virtual machines (“VMs”) allows for autonomy between the partitions and VMs, and further provides additional flexibility on a single host allowing multiple simultaneous instances of otherwise incompatible operating systems or applications. Another common use of VMs, historically employed, has been to aggregate multiple computing environments on a single instance of a physical computer. Doing so is relatively inexpensive compared with multiple hosts of equivalent processing power. Such an approach is also known as “computer consolidation.” Computer consolidation may also be employed to increase the overall computer system availability through redundancy of computer hardware.
FIG. 1 illustrates a prior art apparatus 100 with a user partition 105 and a system partition 110. The user partition 105 includes user resources 185, and two processor cores 175 and 180. The system partition includes processor core 190 and system resources 186. The system partition 110 and user partition 105 communicate with each other via a communication channel 120. The system partition 110 has a corresponding operating system (“OS”) 125 which supports system applications 130, both of which execute utilizing the processor core 190 and resources 186 contained within the system partition 110. The user partition 105 has a corresponding virtual machine monitor (“VMM”) 135, and manages two virtual machines (“VMs”) 140 and 165 running on processor cores 175 and 180. Each VM 140 and 165 runs a corresponding operating system, 145 and 160 respectively. The operating systems 145 and 160, support user applications 150 and 155.
The prior art computing apparatus 100 has no means to balance the utilization levels between the user partition 105 and the system partition 110. Furthermore, the system partition 110 has no VMM to support the execution of one or more VMs. The user partition 105, while having a VMM 135 and VMs 140 and 165, has no means to balance the execution between an overloaded processor core 175 or 180 in the user partition 105 with an underutilized processor core 190 in the system partition 110, nor can it balance the execution load between the system partition 110 and the user partition 105.